﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows;
using System.Windows.Controls;

namespace RandomSelectTool.Resources.SubPage
{
    public partial class StudentCheckIn : Page
    {
        // 学生名单
        private List<string> studentList = new List<string>();
        private int lastIndex = -1;

        public StudentCheckIn()
        {
            InitializeComponent();
            LoadStudentList(); // 加载之前保存的学生名单
        }

        private void LoadStudentList()
        {
            // 检查本地文件是否存在，如果存在则加载名单
            if (File.Exists("studentList.txt"))
            {
                studentList = File.ReadAllLines("studentList.txt").ToList();
            }
            else
            {
                // 如果文件不存在，则使用默认名单
                studentList = new List<string>
                {
                    "张三", "李四", "王麻子", "赵六", "钱七"
                };
            }
        }

        private void SaveStudentList()
        {
            // 将当前学生名单保存到本地文件
            File.WriteAllLines("studentList.txt", studentList);
        }

        private void RoundButton_Click(object sender, RoutedEventArgs e)
        {
            // 随机选取一个学生索引，确保不和上一次相同
            Random rnd = new Random();
            int index;
            do
            {
                index = rnd.Next(0, studentList.Count);
            }
            while (index == lastIndex);

            // 获取当前选定学生的姓名
            string selectedStudent = studentList[index];

            // 更新上一次选中的学生索引
            lastIndex = index;

            // 在文本框中显示选中的学生姓名
            txtSelectedStudent.Text = selectedStudent;
        }

        private void BoomButton_Click(object sender, RoutedEventArgs e)
        {
            // 随机选取一个学生索引，确保不和上一次相同
            Random rnd = new Random();
            int currentIndex;
            do
            {
                currentIndex = rnd.Next(0, studentList.Count);
            }
            while (currentIndex == lastIndex);

            // 获取当前选定学生的姓名
            string selectedStudent = studentList[currentIndex];

            // 更新上一次选中的学生索引
            lastIndex = currentIndex;

            // 生成一个随机数来确定选择前一个还是后一个学生
            int randomDirection = rnd.Next(0, 2); // 生成0或1，0表示选择前一个学生，1表示选择后一个学生

            // 获取前一个或后一个学生的索引
            int nextIndex;
            if (randomDirection == 0)
            {
                nextIndex = currentIndex - 1;
                if (nextIndex < 0)
                {
                    nextIndex = studentList.Count - 1; // 如果当前选定学生是第一个学生，则将上一个学生设置为最后一个学生
                }
            }
            else
            {
                nextIndex = (currentIndex + 1) % studentList.Count; // 如果当前选定学生是最后一个学生，则将下一个学生设置为第一个学生
            }

            // 获取前一个或后一个学生的姓名
            string nextStudent = studentList[nextIndex];
            // 在文本框中显示选中的学生姓名
            txtSelectedStudent.Text = selectedStudent;

            // 显示前一个或后一个学生的姓名
            MessageBox.Show(randomDirection == 0 ? "前一个学生是：" + nextStudent : "后一个学生是：" + nextStudent);

        }



        private void XlsxButton_Click(object sender, RoutedEventArgs e)
        {
            Microsoft.Win32.OpenFileDialog openFileDialog = new Microsoft.Win32.OpenFileDialog();
            openFileDialog.Filter = "Excel Files|*.xlsx;*.xls";

            if (openFileDialog.ShowDialog() == true)
            {
                string filePath = openFileDialog.FileName;

                // 清空之前的学生名单
                studentList.Clear();

                using (var package = new OfficeOpenXml.ExcelPackage(new FileInfo(filePath)))
                {
                    var worksheet = package.Workbook.Worksheets.FirstOrDefault(); // Assuming the list is in the first worksheet

                    if (worksheet != null)
                    {
                        var rowCount = worksheet.Dimension?.Rows ?? 0;

                        // Assuming names are in the first column
                        for (int i = 1; i <= rowCount; i++)
                        {
                            string studentName = worksheet.Cells[i, 3].Value?.ToString();
                            if (!string.IsNullOrEmpty(studentName) && i > 1)
                            {
                                studentList.Add(studentName);
                            }
                        }

                        MessageBox.Show("学生名单已从 Excel 文件中导入并更新。");

                        // 随机选取一个学生姓名
                        Random rnd = new Random();
                        int index = rnd.Next(0, studentList.Count);
                        string selectedStudent = studentList[index];

                        // 在文本框中显示选中的学生姓名
                        txtSelectedStudent.Text = selectedStudent;

                        // 保存当前学生名单到本地文件
                        SaveStudentList();
                    }
                    else
                    {
                        MessageBox.Show("Excel 文件中未找到工作表。");
                    }
                }
            }
        }

        private void Page_Unloaded(object sender, RoutedEventArgs e)
        {
            // 在页面卸载时保存当前学生名单到本地文件
            SaveStudentList();
        }
    }
}
